<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>let和const</h1>
    <script>
        // 声明一个常量, 常量的值不能修改
        const a = 100
        console.log(a);
        // let声明变量
        // let声明变量,如果在声明之前访问, 会报错
        // 如果是var声明的变量, 不会报错,会获取到undefined
        // let声明的变量, 有块级作用域(大括号作用域), 在{}内部声明的变量, 只能在{}内部使用
        {
            let b
            b = 200
        }
        // console.log(b);      报错
        // js代码在执行之前有一个预解析的过程, 预解析过程会将var声明的变量和function声明的函数提到所有代码的最前面
        // 但是对于var声明的变量,只提升声明, 不提升赋值
        fn()
        function fn(){
            console.log('自定义函数fn');
        }
        // fn2()    报错
        var fn2=function(){
            console.log('自定义函数fn2');
        }
       
    </script>
</body>

</html>